Índice


Introducción

Linux es uno de los sistemas operativos más importantes que mantienen vivo el ecosistema de computadores a nivel global. Empujado por un joven estudiante finlandés llamado Linus Torvald en el año 1991, rápidamente se transformó en un pilar fundamental de la infraestructura global.

Lo que conocemos como "Linux" esta ligeramente errado popularmente.
GNU/Linux sería lo correcto, dado que Linux es el Kernel y esto representa aproximadamente la mitad de un sistema operativo. El resto del sistema está compuesto por el proyecto GNU de Richard Stallman y componentes adicionales como compiladores, intérpretes y otros bajo la licencia GPL.

Es así como tenemos diversos sistemas operativos que utilizan el kernel de Linux como su base, como por ejemplo Android que utiliza el kernel de Linux pero no GNU.
Los sistemas utilizan la combinación GNU/Linux se le llaman popularmente distros, de los cuales hay cientos.
Entre las distros tenemos para:
Servidores

Destaca por su política de código abierto, su robustez, seguridad y flexibilidad. Sin embargo, también tiene sus desventajas como la falta de soporte en algunos casos, limitaciones debido a su escasa popularidad al nivel usuario e incluso su dificultad general.
Linux no es precisamente el sistema operativo más amigable a la hora de aprender a usarlo, tiene una curva de aprendizaje bastante alta en comparación con otros SO como Windows.

Sin embargo, el nivel de satisfacción por usarlo es mucho mayor gracias a la capacidad de poder modificarlo y ajustarlo a nuestro propio gusto.
A un nivel más de power user, su manejo es fundamental.

Actualmente linux corre en servidores, mainframes, escritorios, routers, televisores, relojes, refrigeradores, consolas, teléfonos, etc.


Los principios fundamentales

Los 5 fundamentos principales:

Componentes

Arquitectura

Jerarquía de archivos

Linux utiliza una estructura de árbol para sus archivos. Utiliza los siguientes directorios top-level:


Shell

Es importante familiarizarnos con el Shell/CLI en linux ya que gran parte de los servidores manejan linux.
No es difícil de entender ni aprender, gran parte de lo que hacemos en ella es bastante descriptivo si sabes lo que hace cada comando. Y si no lo sabes, siempre está el manual del comando.

Como se mencionó antes, el shell no es más que una interfaz para interactuar directamente con el sistema operativo. Todo lo que podemos hacer en el GUI, se puede hacer en el CLI pero con esteroides.

<usuario>@<hostname><directorio actual>$

Por defecto, generalmente se ve así.
O ejemplificado:

floure@mi_pc[~]$

[~] es nuestro directorio por defecto donde nos logueamos
$ nos indica que estamos conectados como un usuario normal.

Linux tiene una forma de acceder a comandos y privilegios más avanzados llamado el superusuario root. sudo es el prefijo que utilizamos para realizar los comandos como super usuario, pero podemos "loguearnos" como super usuario sólo realizando su, ahí lo veríamos de esta forma:

root@mi_pc[~]#

Como especialistas en ciberseguridad, es importante entender lo que podemos ver en ese query inicial. En un ambiente propio y común, es así como lo veríamos. Pero en un ambiente de penetración, lo más probable es que sólo veamos $
Es ahí donde entra el archivo de configuración .bashrc, en él podemos configurar qué vemos en esa parte.
Por ejemplo podríamos agregar \u para visualizar el usuario actual, \d para la fecha y otros.
Son varias las opciones la verdad. Una manera rápida y eficiente de hacerlo es a través de herramientas como este generador.

Uno de los comandos más útiles que tenemos es el man, el cual nos entrega parte del manual del comando. Podemos, por ejemplo, consultar qué hace un comando de esta forma:

man curl


Además de man, podemos también utilizar --help o -hlo que nos dará las opciones:

Otro muy útil es el comando apropos que nos ayudará a buscar comandos, revisando las instancias del nombre en los manuales
Este es el apartado con comandos linux


La navegación en el shell de linux es bastante sencillo pero poderoso cuando sabemos lo que estamos haciendo.

Los comandos más importantes para ello son:

Con esos tres comandos, y sus respectivas opciones, podemos viajar por todo su sistema. Lo importante es saber combinarlos para ser más eficiente. Por ejemplo:

cd ../../etc && clear && ls -lia hará lo siguiente:


Creación de archivos

La mayoría de las consolas bash traen integrado editores de texto livianos como ViM (muy potente, pero muy complejo) y Nano (otro editor, más sencillo de usar pero menos poderoso), con ellos podemos fácil y rápidamente crear nuevos archivos. Recordemos que Linux funciona mayoritariamente con archivos de texto, así que esto es importante.

Para realizar estas acciones tenemos los comandos más básicos que son: